SPSS – 创建虚拟变量工具

作者:Ruben Geert van den Berg,发布于 SPSS 工具回归分析

在多元回归分析中,类别变量不能直接用作预测变量。它们必须被分解成二分变量,也就是常说的“虚拟变量”(Dummy Variables)。本教程提供了一个简单的工具来创建这些虚拟变量。

示例数据文件

我们将在两个例子中演示我们的工具:一个数值型变量和一个字符型变量。这两个变量都位于 staff.sav 数据文件中,部分内容如下所示。

SPSS Staff Data Variable View 496

我们建议您下载并在 SPSS 中打开此数据文件,并重复我们提供的示例。

前提条件和安装

我们的工具需要 SPSS 24 或更高版本。 此外,必须安装 SPSS Python 3 essentials (通常在最新的 SPSS 版本中已安装)。

接下来,点击 SPSS_TUTORIALS_DUMMIFY.spe 以下载我们的工具。要安装它,请导航到 E_x_tensions SPSS Menu Arrow I_nstall local extension bundle_ ,如下图所示。

SPSS Extensions Install Local Extension Bundle

在打开的对话框中,找到下载的 .spe 文件并安装它。然后,SPSS 将确认该扩展已成功安装在 T_ransform_ SPSS Menu Arrow SPSS tutorials - Create Dummy Variables 下。

示例 I - 数值型类别变量

现在让我们对“Marital Status(婚姻状况)”进行虚拟变量处理。在此之前,我们建议您首先检查其基本频数分布,如下所示。

SPSS Dummy Variables Tool Frequency Table 1

重要的是,请注意“Marital Status(婚姻状况)”包含 4 个有效(非缺失)值。正如我们稍后将解释的,我们总是需要排除一个类别,即参考类别。因此,我们将创建 3 个虚拟变量来表示我们的 4 个类别。

我们将通过导航到 T_ransform_ SPSS Menu Arrow SPSS tutorials - Create Dummy Variables 来完成此操作,如下图所示。

SPSS Create Dummy Variables Tool Menu

现在,让我们填写弹出的对话框。

SPSS Create Dummy Variables Tool Dialog 1

我们选择第一个类别(“Never Married(从未结婚)”)作为我们的参考类别。完成这些操作后,结果如下面的 语法 (Syntax) 所示。让我们运行它。

* 创建婚姻状况的虚拟变量,以第一个类别作为参考类别.
SPSS TUTORIALS DUMMIFY VARIABLES=marit
/OPTIONS NEWLABELS=LABLAB REFCAT=FIRST ACTION=RUN.

结果

我们的工具现在在活动数据集(Active Dataset)中创建了 3 个虚拟变量。 让我们将它们与原始变量“Marital Status(婚姻状况)”的值标签进行比较。

SPSS Create Dummy Variables Tool Result 1

首先请注意,我们的虚拟变量的变量名(Variable Names)是原始变量名加上一个整数后缀。 这些后缀通常与其代表的类别不对应。

相反,这些类别可以在虚拟变量的变量标签(Variable Labels)中找到。 在此示例中,它们基于“Marital Status(婚姻状况)”中的变量和值标签。

接下来,请注意,由于以下原因,某些类别被跳过:

  • 没有为“Never Married(从未结婚)”创建虚拟变量,因为我们选择了它作为参考类别;
  • 没有为“Currently Divorcing(目前正在离婚)”创建虚拟变量,因为它实际上并未出现在我们的数据集中;
  • 没有为“(Unknown)(未知)”创建虚拟变量,因为它是 用户缺失值(User Missing Value)

现在最大的问题是:这些结果正确吗?确认它们确实正确的一种简单方法是实际运行 虚拟变量回归 (Dummy Variable Regression) 。然后,我们将使用基本的 ANOVA 运行完全相同的分析。

例如,让我们尝试通过以下语法,通过两种方法根据“Marital Status(婚姻状况)”预测“Salary(薪水)”。

* 通过虚拟变量回归比较不同婚姻状况的平均工资.
REGRESSION
/DEPENDENT salary
/METHOD ENTER marit_1 TO marit_3.

* 通过 ANOVA 比较不同婚姻状况的平均工资.
MEANS salary BY marit
/STATISTICS ANOVA.

首先请注意,回归的 R 平方 0.089 与我们 ANOVA 结果中的 Eta 平方 0.089 相同。 这是有道理的,因为它们都表明了“Salary(薪水)”中由“Marital Status(婚姻状况)”解释的方差比例。

此外,我们的 ANOVA 得出的显著性水平 (Significance Level) 为 p = 0.002,与我们的回归分析相同。 我们甚至可以通过 ANOVA 复制回归 B 系数及其置信区间 (Confidence Intervals)(我们将在以后的教程中进行)。 但就目前而言,让我们得出结论,结果是正确的。

示例 II - 字符型类别变量

现在让我们对“Job Type(工作类型)”进行虚拟变量处理,这是一个 字符型变量 (String Variable)。同样,我们将首先检查其频率,并且我们可能需要指定一些缺失值。正如在 SPSS - 字符型变量的缺失值 中讨论的那样,这样做很麻烦,但以下语法可以完成这项工作。

* 检查基本频率表.
FREQUENCIES jtype.

* 将 '(Unknown)' 更改为 'NA'.
RECODE jtype ( '(Unknown)' = 'NA').

* 将空字符串值和 'NA' 设置为用户缺失值.
MISSING VALUES jtype ('','NA').

* 重新检查基本频率表.
FREQUENCIES jtype.

结果

SPSS Dummy Variables Tool Frequency Table 2

同样,我们将首先导航到 T_ransform_ SPSS Menu Arrow SPSS tutorials - Create Dummy Variables,我们将填写对话框,如下所示。

SPSS Create Dummy Variables Tool Dialog 2

对于字符型变量,值本身通常描述它们的类别。因此,我们将值(而不是值标签)放入虚拟变量的变量标签中。 如果我们既不想要第一个类别作为参考,也不想要最后一个类别作为参考,我们将选择“none(无)”。在这种情况下,我们必须手动从随后的回归分析中排除其中一个虚拟变量。 除了创建虚拟变量之外,我们可能还想检查该工具创建和运行的语法。我们也可以从语法窗口复制、粘贴、编辑和运行它,而不是让我们的工具来完成。

完成这些步骤后,结果如下所示的语法。

* 创建 Job Type 的虚拟变量,没有任何参考类别.
SPSS TUTORIALS DUMMIFY VARIABLES=jtype
/OPTIONS NEWLABELS=LABVAL REFCAT=NONE ACTION=BOTH.

结果

除了创建 5 个虚拟变量外,我们的工具还在输出窗口中打印了所使用的语法,如下所示。

SPSS Create Dummy Variables Tool Syntax Example

最后,如果您没有选择任何参考类别,则必须从回归分析中排除其中一个虚拟变量。以下语法显示了如果不这样做会发生什么。

* 比较不同 Job Type 的工资 **错误的方式** : 没有参考类别.

REGRESSION
/DEPENDENT salary
/METHOD ENTER jtype_1 jtype_2 jtype_3 jtype_4 jtype_5.

* 比较不同 Job Type 的工资 **正确的方式** : 参考类别 = 4 (sales).

REGRESSION
/DEPENDENT salary
/METHOD ENTER jtype_1 jtype_2 jtype_3 jtype_5.

第一个例子是完美多重共线性 (Multicollinearity) 的教科书式说明:某个预测变量的分数可以从某些其他预测变量完美预测。 这是有道理的:在前 4 个虚拟变量上得分 0 的受访者_必须_在最后一个虚拟变量上得分 1(反之亦然)。

在这种情况下,无法估计 B 系数。 因此,SPSS 从分析中排除了一个预测变量,如下所示。

SPSS Regression Output Multicollinearity

请注意,“Tolerance(容差)”是模型中其他预测变量无法解释的预测变量中的方差比例。 因此,容差为 0.000 意味着某些预测变量可以从其他预测变量中预测出 100% - 或完美 - 预测。